// Copyright (c) 2016, SolidCP
// SolidCP is distributed under the Creative Commons Share-alike license
// 
// SolidCP is a fork of WebsitePanel:
// Copyright (c) 2015, Outercurve Foundation.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification,
// are permitted provided that the following conditions are met:
//
// - Redistributions of source code must  retain  the  above copyright notice, this
//   list of conditions and the following disclaimer.
//
// - Redistributions in binary form  must  reproduce the  above  copyright  notice,
//   this list of conditions  and  the  following  disclaimer in  the documentation
//   and/or other materials provided with the distribution.
//
// - Neither  the  name  of  the  Outercurve Foundation  nor   the   names  of  its
//   contributors may be used to endorse or  promote  products  derived  from  this
//   software without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,  BUT  NOT  LIMITED TO, THE IMPLIED
// WARRANTIES  OF  MERCHANTABILITY   AND  FITNESS  FOR  A  PARTICULAR  PURPOSE  ARE
// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
// ANY DIRECT, INDIRECT, INCIDENTAL,  SPECIAL,  EXEMPLARY, OR CONSEQUENTIAL DAMAGES
// (INCLUDING, BUT NOT LIMITED TO,  PROCUREMENT  OF  SUBSTITUTE  GOODS OR SERVICES;
// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)  HOWEVER  CAUSED AND ON
// ANY  THEORY  OF  LIABILITY,  WHETHER  IN  CONTRACT,  STRICT  LIABILITY,  OR TORT
// (INCLUDING NEGLIGENCE OR OTHERWISE)  ARISING  IN  ANY WAY OUT OF THE USE OF THIS
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

﻿//------------------------------------------------------------------------------
// <auto-generated>
//     This code was generated by a tool.
//     Runtime Version:2.0.50727.832
//
//     Changes to this file may cause incorrect behavior and will be lost if
//     the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------

// 
// This source code was auto-generated by wsdl, Version=2.0.50727.42.
// 
using System.Configuration;

namespace SolidCP.ServiceProviders.DNS.Nettica {
    using System.Diagnostics;
    using System.Web.Services;
    using System.ComponentModel;
    using System.Web.Services.Protocols;
    using System;
    using System.Xml.Serialization;
    
    
    /// <remarks/>
    [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")]
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.ComponentModel.DesignerCategoryAttribute("code")]
    [System.Web.Services.WebServiceBindingAttribute(Name="NetticaProxySoap", Namespace="http://www.nettica.com/DNS/DnsApi")]
    public partial class NetticaProxy : System.Web.Services.Protocols.SoapHttpClientProtocol {
        
        private System.Threading.SendOrPostCallback GetServiceInfoOperationCompleted;
        
        private System.Threading.SendOrPostCallback CreateZoneOperationCompleted;
        
        private System.Threading.SendOrPostCallback CreateSecondaryZoneOperationCompleted;
        
        private System.Threading.SendOrPostCallback DeleteZoneOperationCompleted;
        
        private System.Threading.SendOrPostCallback ListZonesOperationCompleted;
        
        private System.Threading.SendOrPostCallback ListDomainOperationCompleted;
        
        private System.Threading.SendOrPostCallback AddRecordOperationCompleted;
        
        private System.Threading.SendOrPostCallback UpdateRecordOperationCompleted;
        
        private System.Threading.SendOrPostCallback DeleteRecordOperationCompleted;
        
        private System.Threading.SendOrPostCallback ApplyTemplateOperationCompleted;

        public const string NetticaWebServiceUrl = "NetticaWebServiceUrl";
        
        /// <remarks/>
        public NetticaProxy() {
            this.Url = "https://www.nettica.com/DNS/DnsApi.asmx";
        }
        
        /// <remarks/>
        public event GetServiceInfoCompletedEventHandler GetServiceInfoCompleted;
        
        /// <remarks/>
        public event CreateZoneCompletedEventHandler CreateZoneCompleted;
        
        /// <remarks/>
        public event CreateSecondaryZoneCompletedEventHandler CreateSecondaryZoneCompleted;
        
        /// <remarks/>
        public event DeleteZoneCompletedEventHandler DeleteZoneCompleted;
        
        /// <remarks/>
        public event ListZonesCompletedEventHandler ListZonesCompleted;
        
        /// <remarks/>
        public event ListDomainCompletedEventHandler ListDomainCompleted;
        
        /// <remarks/>
        public event AddRecordCompletedEventHandler AddRecordCompleted;
        
        /// <remarks/>
        public event UpdateRecordCompletedEventHandler UpdateRecordCompleted;
        
        /// <remarks/>
        public event DeleteRecordCompletedEventHandler DeleteRecordCompleted;
        
        /// <remarks/>
        public event ApplyTemplateCompletedEventHandler ApplyTemplateCompleted;
        
        /// <remarks/>
        [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://www.nettica.com/DNS/DnsApi/GetServiceInfo", RequestNamespace="http://www.nettica.com/DNS/DnsApi", ResponseNamespace="http://www.nettica.com/DNS/DnsApi", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
        public ServiceResult GetServiceInfo(string UserName, string Password) {
            object[] results = this.Invoke("GetServiceInfo", new object[] {
                        UserName,
                        Password});
            return ((ServiceResult)(results[0]));
        }
        
        /// <remarks/>
        public System.IAsyncResult BeginGetServiceInfo(string UserName, string Password, System.AsyncCallback callback, object asyncState) {
            return this.BeginInvoke("GetServiceInfo", new object[] {
                        UserName,
                        Password}, callback, asyncState);
        }
        
        /// <remarks/>
        public ServiceResult EndGetServiceInfo(System.IAsyncResult asyncResult) {
            object[] results = this.EndInvoke(asyncResult);
            return ((ServiceResult)(results[0]));
        }
        
        /// <remarks/>
        public void GetServiceInfoAsync(string UserName, string Password) {
            this.GetServiceInfoAsync(UserName, Password, null);
        }
        
        /// <remarks/>
        public void GetServiceInfoAsync(string UserName, string Password, object userState) {
            if ((this.GetServiceInfoOperationCompleted == null)) {
                this.GetServiceInfoOperationCompleted = new System.Threading.SendOrPostCallback(this.OnGetServiceInfoOperationCompleted);
            }
            this.InvokeAsync("GetServiceInfo", new object[] {
                        UserName,
                        Password}, this.GetServiceInfoOperationCompleted, userState);
        }
        
        private void OnGetServiceInfoOperationCompleted(object arg) {
            if ((this.GetServiceInfoCompleted != null)) {
                System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
                this.GetServiceInfoCompleted(this, new GetServiceInfoCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
            }
        }
        
        /// <remarks/>
        [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://www.nettica.com/DNS/DnsApi/CreateZone", RequestNamespace="http://www.nettica.com/DNS/DnsApi", ResponseNamespace="http://www.nettica.com/DNS/DnsApi", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
        public DnsResult CreateZone(string UserName, string Password, string DomainName, string IpAddress) {
            object[] results = this.Invoke("CreateZone", new object[] {
                        UserName,
                        Password,
                        DomainName,
                        IpAddress});
            return ((DnsResult)(results[0]));
        }
        
        /// <remarks/>
        public System.IAsyncResult BeginCreateZone(string UserName, string Password, string DomainName, string IpAddress, System.AsyncCallback callback, object asyncState) {
            return this.BeginInvoke("CreateZone", new object[] {
                        UserName,
                        Password,
                        DomainName,
                        IpAddress}, callback, asyncState);
        }
        
        /// <remarks/>
        public DnsResult EndCreateZone(System.IAsyncResult asyncResult) {
            object[] results = this.EndInvoke(asyncResult);
            return ((DnsResult)(results[0]));
        }
        
        /// <remarks/>
        public void CreateZoneAsync(string UserName, string Password, string DomainName, string IpAddress) {
            this.CreateZoneAsync(UserName, Password, DomainName, IpAddress, null);
        }
        
        /// <remarks/>
        public void CreateZoneAsync(string UserName, string Password, string DomainName, string IpAddress, object userState) {
            if ((this.CreateZoneOperationCompleted == null)) {
                this.CreateZoneOperationCompleted = new System.Threading.SendOrPostCallback(this.OnCreateZoneOperationCompleted);
            }
            this.InvokeAsync("CreateZone", new object[] {
                        UserName,
                        Password,
                        DomainName,
                        IpAddress}, this.CreateZoneOperationCompleted, userState);
        }
        
        private void OnCreateZoneOperationCompleted(object arg) {
            if ((this.CreateZoneCompleted != null)) {
                System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
                this.CreateZoneCompleted(this, new CreateZoneCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
            }
        }
        
        /// <remarks/>
        [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://www.nettica.com/DNS/DnsApi/CreateSecondaryZone", RequestNamespace="http://www.nettica.com/DNS/DnsApi", ResponseNamespace="http://www.nettica.com/DNS/DnsApi", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
        public DnsResult CreateSecondaryZone(string UserName, string Password, string DomainName, string Master, string IpAddress) {
            object[] results = this.Invoke("CreateSecondaryZone", new object[] {
                        UserName,
                        Password,
                        DomainName,
                        Master,
                        IpAddress});
            return ((DnsResult)(results[0]));
        }
        
        /// <remarks/>
        public System.IAsyncResult BeginCreateSecondaryZone(string UserName, string Password, string DomainName, string Master, string IpAddress, System.AsyncCallback callback, object asyncState) {
            return this.BeginInvoke("CreateSecondaryZone", new object[] {
                        UserName,
                        Password,
                        DomainName,
                        Master,
                        IpAddress}, callback, asyncState);
        }
        
        /// <remarks/>
        public DnsResult EndCreateSecondaryZone(System.IAsyncResult asyncResult) {
            object[] results = this.EndInvoke(asyncResult);
            return ((DnsResult)(results[0]));
        }
        
        /// <remarks/>
        public void CreateSecondaryZoneAsync(string UserName, string Password, string DomainName, string Master, string IpAddress) {
            this.CreateSecondaryZoneAsync(UserName, Password, DomainName, Master, IpAddress, null);
        }
        
        /// <remarks/>
        public void CreateSecondaryZoneAsync(string UserName, string Password, string DomainName, string Master, string IpAddress, object userState) {
            if ((this.CreateSecondaryZoneOperationCompleted == null)) {
                this.CreateSecondaryZoneOperationCompleted = new System.Threading.SendOrPostCallback(this.OnCreateSecondaryZoneOperationCompleted);
            }
            this.InvokeAsync("CreateSecondaryZone", new object[] {
                        UserName,
                        Password,
                        DomainName,
                        Master,
                        IpAddress}, this.CreateSecondaryZoneOperationCompleted, userState);
        }
        
        private void OnCreateSecondaryZoneOperationCompleted(object arg) {
            if ((this.CreateSecondaryZoneCompleted != null)) {
                System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
                this.CreateSecondaryZoneCompleted(this, new CreateSecondaryZoneCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
            }
        }
        
        /// <remarks/>
        [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://www.nettica.com/DNS/DnsApi/DeleteZone", RequestNamespace="http://www.nettica.com/DNS/DnsApi", ResponseNamespace="http://www.nettica.com/DNS/DnsApi", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
        public DnsResult DeleteZone(string UserName, string Password, string DomainName) {
            object[] results = this.Invoke("DeleteZone", new object[] {
                        UserName,
                        Password,
                        DomainName});
            return ((DnsResult)(results[0]));
        }
        
        /// <remarks/>
        public System.IAsyncResult BeginDeleteZone(string UserName, string Password, string DomainName, System.AsyncCallback callback, object asyncState) {
            return this.BeginInvoke("DeleteZone", new object[] {
                        UserName,
                        Password,
                        DomainName}, callback, asyncState);
        }
        
        /// <remarks/>
        public DnsResult EndDeleteZone(System.IAsyncResult asyncResult) {
            object[] results = this.EndInvoke(asyncResult);
            return ((DnsResult)(results[0]));
        }
        
        /// <remarks/>
        public void DeleteZoneAsync(string UserName, string Password, string DomainName) {
            this.DeleteZoneAsync(UserName, Password, DomainName, null);
        }
        
        /// <remarks/>
        public void DeleteZoneAsync(string UserName, string Password, string DomainName, object userState) {
            if ((this.DeleteZoneOperationCompleted == null)) {
                this.DeleteZoneOperationCompleted = new System.Threading.SendOrPostCallback(this.OnDeleteZoneOperationCompleted);
            }
            this.InvokeAsync("DeleteZone", new object[] {
                        UserName,
                        Password,
                        DomainName}, this.DeleteZoneOperationCompleted, userState);
        }
        
        private void OnDeleteZoneOperationCompleted(object arg) {
            if ((this.DeleteZoneCompleted != null)) {
                System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
                this.DeleteZoneCompleted(this, new DeleteZoneCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
            }
        }
        
        /// <remarks/>
        [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://www.nettica.com/DNS/DnsApi/ListZones", RequestNamespace="http://www.nettica.com/DNS/DnsApi", ResponseNamespace="http://www.nettica.com/DNS/DnsApi", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
        public ZoneResult ListZones(string UserName, string Password) {
            object[] results = this.Invoke("ListZones", new object[] {
                        UserName,
                        Password});
            return ((ZoneResult)(results[0]));
        }
        
        /// <remarks/>
        public System.IAsyncResult BeginListZones(string UserName, string Password, System.AsyncCallback callback, object asyncState) {
            return this.BeginInvoke("ListZones", new object[] {
                        UserName,
                        Password}, callback, asyncState);
        }
        
        /// <remarks/>
        public ZoneResult EndListZones(System.IAsyncResult asyncResult) {
            object[] results = this.EndInvoke(asyncResult);
            return ((ZoneResult)(results[0]));
        }
        
        /// <remarks/>
        public void ListZonesAsync(string UserName, string Password) {
            this.ListZonesAsync(UserName, Password, null);
        }
        
        /// <remarks/>
        public void ListZonesAsync(string UserName, string Password, object userState) {
            if ((this.ListZonesOperationCompleted == null)) {
                this.ListZonesOperationCompleted = new System.Threading.SendOrPostCallback(this.OnListZonesOperationCompleted);
            }
            this.InvokeAsync("ListZones", new object[] {
                        UserName,
                        Password}, this.ListZonesOperationCompleted, userState);
        }
        
        private void OnListZonesOperationCompleted(object arg) {
            if ((this.ListZonesCompleted != null)) {
                System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
                this.ListZonesCompleted(this, new ListZonesCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
            }
        }
        
        /// <remarks/>
        [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://www.nettica.com/DNS/DnsApi/ListDomain", RequestNamespace="http://www.nettica.com/DNS/DnsApi", ResponseNamespace="http://www.nettica.com/DNS/DnsApi", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
        public DomainResult ListDomain(string UserName, string Password, string DomainName) {
            object[] results = this.Invoke("ListDomain", new object[] {
                        UserName,
                        Password,
                        DomainName});
            return ((DomainResult)(results[0]));
        }
        
        /// <remarks/>
        public System.IAsyncResult BeginListDomain(string UserName, string Password, string DomainName, System.AsyncCallback callback, object asyncState) {
            return this.BeginInvoke("ListDomain", new object[] {
                        UserName,
                        Password,
                        DomainName}, callback, asyncState);
        }
        
        /// <remarks/>
        public DomainResult EndListDomain(System.IAsyncResult asyncResult) {
            object[] results = this.EndInvoke(asyncResult);
            return ((DomainResult)(results[0]));
        }
        
        /// <remarks/>
        public void ListDomainAsync(string UserName, string Password, string DomainName) {
            this.ListDomainAsync(UserName, Password, DomainName, null);
        }
        
        /// <remarks/>
        public void ListDomainAsync(string UserName, string Password, string DomainName, object userState) {
            if ((this.ListDomainOperationCompleted == null)) {
                this.ListDomainOperationCompleted = new System.Threading.SendOrPostCallback(this.OnListDomainOperationCompleted);
            }
            this.InvokeAsync("ListDomain", new object[] {
                        UserName,
                        Password,
                        DomainName}, this.ListDomainOperationCompleted, userState);
        }
        
        private void OnListDomainOperationCompleted(object arg) {
            if ((this.ListDomainCompleted != null)) {
                System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
                this.ListDomainCompleted(this, new ListDomainCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
            }
        }
        
        /// <remarks/>
        [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://www.nettica.com/DNS/DnsApi/AddRecord", RequestNamespace="http://www.nettica.com/DNS/DnsApi", ResponseNamespace="http://www.nettica.com/DNS/DnsApi", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
        public DnsResult AddRecord(string UserName, string Password, DomainRecord d) {
            object[] results = this.Invoke("AddRecord", new object[] {
                        UserName,
                        Password,
                        d});
            return ((DnsResult)(results[0]));
        }
        
        /// <remarks/>
        public System.IAsyncResult BeginAddRecord(string UserName, string Password, DomainRecord d, System.AsyncCallback callback, object asyncState) {
            return this.BeginInvoke("AddRecord", new object[] {
                        UserName,
                        Password,
                        d}, callback, asyncState);
        }
        
        /// <remarks/>
        public DnsResult EndAddRecord(System.IAsyncResult asyncResult) {
            object[] results = this.EndInvoke(asyncResult);
            return ((DnsResult)(results[0]));
        }
        
        /// <remarks/>
        public void AddRecordAsync(string UserName, string Password, DomainRecord d) {
            this.AddRecordAsync(UserName, Password, d, null);
        }
        
        /// <remarks/>
        public void AddRecordAsync(string UserName, string Password, DomainRecord d, object userState) {
            if ((this.AddRecordOperationCompleted == null)) {
                this.AddRecordOperationCompleted = new System.Threading.SendOrPostCallback(this.OnAddRecordOperationCompleted);
            }
            this.InvokeAsync("AddRecord", new object[] {
                        UserName,
                        Password,
                        d}, this.AddRecordOperationCompleted, userState);
        }
        
        private void OnAddRecordOperationCompleted(object arg) {
            if ((this.AddRecordCompleted != null)) {
                System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
                this.AddRecordCompleted(this, new AddRecordCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
            }
        }
        
        /// <remarks/>
        [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://www.nettica.com/DNS/DnsApi/UpdateRecord", RequestNamespace="http://www.nettica.com/DNS/DnsApi", ResponseNamespace="http://www.nettica.com/DNS/DnsApi", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
        public DnsResult UpdateRecord(string UserName, string Password, DomainRecord Old, DomainRecord New) {
            object[] results = this.Invoke("UpdateRecord", new object[] {
                        UserName,
                        Password,
                        Old,
                        New});
            return ((DnsResult)(results[0]));
        }
        
        /// <remarks/>
        public System.IAsyncResult BeginUpdateRecord(string UserName, string Password, DomainRecord Old, DomainRecord New, System.AsyncCallback callback, object asyncState) {
            return this.BeginInvoke("UpdateRecord", new object[] {
                        UserName,
                        Password,
                        Old,
                        New}, callback, asyncState);
        }
        
        /// <remarks/>
        public DnsResult EndUpdateRecord(System.IAsyncResult asyncResult) {
            object[] results = this.EndInvoke(asyncResult);
            return ((DnsResult)(results[0]));
        }
        
        /// <remarks/>
        public void UpdateRecordAsync(string UserName, string Password, DomainRecord Old, DomainRecord New) {
            this.UpdateRecordAsync(UserName, Password, Old, New, null);
        }
        
        /// <remarks/>
        public void UpdateRecordAsync(string UserName, string Password, DomainRecord Old, DomainRecord New, object userState) {
            if ((this.UpdateRecordOperationCompleted == null)) {
                this.UpdateRecordOperationCompleted = new System.Threading.SendOrPostCallback(this.OnUpdateRecordOperationCompleted);
            }
            this.InvokeAsync("UpdateRecord", new object[] {
                        UserName,
                        Password,
                        Old,
                        New}, this.UpdateRecordOperationCompleted, userState);
        }
        
        private void OnUpdateRecordOperationCompleted(object arg) {
            if ((this.UpdateRecordCompleted != null)) {
                System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
                this.UpdateRecordCompleted(this, new UpdateRecordCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
            }
        }
        
        /// <remarks/>
        [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://www.nettica.com/DNS/DnsApi/DeleteRecord", RequestNamespace="http://www.nettica.com/DNS/DnsApi", ResponseNamespace="http://www.nettica.com/DNS/DnsApi", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
        public DnsResult DeleteRecord(string UserName, string Password, DomainRecord d) {
            object[] results = this.Invoke("DeleteRecord", new object[] {
                        UserName,
                        Password,
                        d});
            return ((DnsResult)(results[0]));
        }
        
        /// <remarks/>
        public System.IAsyncResult BeginDeleteRecord(string UserName, string Password, DomainRecord d, System.AsyncCallback callback, object asyncState) {
            return this.BeginInvoke("DeleteRecord", new object[] {
                        UserName,
                        Password,
                        d}, callback, asyncState);
        }
        
        /// <remarks/>
        public DnsResult EndDeleteRecord(System.IAsyncResult asyncResult) {
            object[] results = this.EndInvoke(asyncResult);
            return ((DnsResult)(results[0]));
        }
        
        /// <remarks/>
        public void DeleteRecordAsync(string UserName, string Password, DomainRecord d) {
            this.DeleteRecordAsync(UserName, Password, d, null);
        }
        
        /// <remarks/>
        public void DeleteRecordAsync(string UserName, string Password, DomainRecord d, object userState) {
            if ((this.DeleteRecordOperationCompleted == null)) {
                this.DeleteRecordOperationCompleted = new System.Threading.SendOrPostCallback(this.OnDeleteRecordOperationCompleted);
            }
            this.InvokeAsync("DeleteRecord", new object[] {
                        UserName,
                        Password,
                        d}, this.DeleteRecordOperationCompleted, userState);
        }
        
        private void OnDeleteRecordOperationCompleted(object arg) {
            if ((this.DeleteRecordCompleted != null)) {
                System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
                this.DeleteRecordCompleted(this, new DeleteRecordCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
            }
        }
        
        /// <remarks/>
        [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://www.nettica.com/DNS/DnsApi/ApplyTemplate", RequestNamespace="http://www.nettica.com/DNS/DnsApi", ResponseNamespace="http://www.nettica.com/DNS/DnsApi", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
        public DnsResult ApplyTemplate(string UserName, string Password, string DomainName, string GroupName) {
            object[] results = this.Invoke("ApplyTemplate", new object[] {
                        UserName,
                        Password,
                        DomainName,
                        GroupName});
            return ((DnsResult)(results[0]));
        }
        
        /// <remarks/>
        public System.IAsyncResult BeginApplyTemplate(string UserName, string Password, string DomainName, string GroupName, System.AsyncCallback callback, object asyncState) {
            return this.BeginInvoke("ApplyTemplate", new object[] {
                        UserName,
                        Password,
                        DomainName,
                        GroupName}, callback, asyncState);
        }
        
        /// <remarks/>
        public DnsResult EndApplyTemplate(System.IAsyncResult asyncResult) {
            object[] results = this.EndInvoke(asyncResult);
            return ((DnsResult)(results[0]));
        }
        
        /// <remarks/>
        public void ApplyTemplateAsync(string UserName, string Password, string DomainName, string GroupName) {
            this.ApplyTemplateAsync(UserName, Password, DomainName, GroupName, null);
        }
        
        /// <remarks/>
        public void ApplyTemplateAsync(string UserName, string Password, string DomainName, string GroupName, object userState) {
            if ((this.ApplyTemplateOperationCompleted == null)) {
                this.ApplyTemplateOperationCompleted = new System.Threading.SendOrPostCallback(this.OnApplyTemplateOperationCompleted);
            }
            this.InvokeAsync("ApplyTemplate", new object[] {
                        UserName,
                        Password,
                        DomainName,
                        GroupName}, this.ApplyTemplateOperationCompleted, userState);
        }
        
        private void OnApplyTemplateOperationCompleted(object arg) {
            if ((this.ApplyTemplateCompleted != null)) {
                System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
                this.ApplyTemplateCompleted(this, new ApplyTemplateCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
            }
        }
        
        /// <remarks/>
        public new void CancelAsync(object userState) {
            base.CancelAsync(userState);
        }
    }
    
    /// <remarks/>
    [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")]
    [System.SerializableAttribute()]
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.ComponentModel.DesignerCategoryAttribute("code")]
    [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://www.nettica.com/DNS/DnsApi")]
    public partial class ServiceResult {
        
        /// <remarks/>
        public DnsResult Result;
        
        /// <remarks/>
        public int RemainingCredits;
        
        /// <remarks/>
        public int TotalCredits;
        
        /// <remarks/>
        public System.DateTime ServiceRenewalDate;
    }
    
    /// <remarks/>
    [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")]
    [System.SerializableAttribute()]
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.ComponentModel.DesignerCategoryAttribute("code")]
    [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://www.nettica.com/DNS/DnsApi")]
    public partial class DnsResult {
        
        /// <remarks/>
        public int Status;
        
        /// <remarks/>
        public string Description;
    }
    
    /// <remarks/>
    [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")]
    [System.SerializableAttribute()]
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.ComponentModel.DesignerCategoryAttribute("code")]
    [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://www.nettica.com/DNS/DnsApi")]
    public partial class DomainRecord {
        
        /// <remarks/>
        public string DomainName;
        
        /// <remarks/>
        public string HostName;
        
        /// <remarks/>
        public string RecordType;
        
        /// <remarks/>
        public string Data;
        
        /// <remarks/>
        public int TTL;
        
        /// <remarks/>
        public int Priority;
    }
    
    /// <remarks/>
    [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")]
    [System.SerializableAttribute()]
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.ComponentModel.DesignerCategoryAttribute("code")]
    [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://www.nettica.com/DNS/DnsApi")]
    public partial class DomainResult {
        
        /// <remarks/>
        public DnsResult Result;
        
        /// <remarks/>
        public int Count;
        
        /// <remarks/>
        public DomainRecord[] Record;
    }
    
    /// <remarks/>
    [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")]
    [System.SerializableAttribute()]
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.ComponentModel.DesignerCategoryAttribute("code")]
    [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://www.nettica.com/DNS/DnsApi")]
    public partial class ZoneResult {
        
        /// <remarks/>
        public DnsResult Result;
        
        /// <remarks/>
        public int Count;
        
        /// <remarks/>
        public string[] Zone;
    }
    
    /// <remarks/>
    [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")]
    public delegate void GetServiceInfoCompletedEventHandler(object sender, GetServiceInfoCompletedEventArgs e);
    
    /// <remarks/>
    [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")]
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.ComponentModel.DesignerCategoryAttribute("code")]
    public partial class GetServiceInfoCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
        
        private object[] results;
        
        internal GetServiceInfoCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : 
                base(exception, cancelled, userState) {
            this.results = results;
        }
        
        /// <remarks/>
        public ServiceResult Result {
            get {
                this.RaiseExceptionIfNecessary();
                return ((ServiceResult)(this.results[0]));
            }
        }
    }
    
    /// <remarks/>
    [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")]
    public delegate void CreateZoneCompletedEventHandler(object sender, CreateZoneCompletedEventArgs e);
    
    /// <remarks/>
    [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")]
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.ComponentModel.DesignerCategoryAttribute("code")]
    public partial class CreateZoneCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
        
        private object[] results;
        
        internal CreateZoneCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : 
                base(exception, cancelled, userState) {
            this.results = results;
        }
        
        /// <remarks/>
        public DnsResult Result {
            get {
                this.RaiseExceptionIfNecessary();
                return ((DnsResult)(this.results[0]));
            }
        }
    }
    
    /// <remarks/>
    [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")]
    public delegate void CreateSecondaryZoneCompletedEventHandler(object sender, CreateSecondaryZoneCompletedEventArgs e);
    
    /// <remarks/>
    [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")]
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.ComponentModel.DesignerCategoryAttribute("code")]
    public partial class CreateSecondaryZoneCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
        
        private object[] results;
        
        internal CreateSecondaryZoneCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : 
                base(exception, cancelled, userState) {
            this.results = results;
        }
        
        /// <remarks/>
        public DnsResult Result {
            get {
                this.RaiseExceptionIfNecessary();
                return ((DnsResult)(this.results[0]));
            }
        }
    }
    
    /// <remarks/>
    [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")]
    public delegate void DeleteZoneCompletedEventHandler(object sender, DeleteZoneCompletedEventArgs e);
    
    /// <remarks/>
    [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")]
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.ComponentModel.DesignerCategoryAttribute("code")]
    public partial class DeleteZoneCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
        
        private object[] results;
        
        internal DeleteZoneCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : 
                base(exception, cancelled, userState) {
            this.results = results;
        }
        
        /// <remarks/>
        public DnsResult Result {
            get {
                this.RaiseExceptionIfNecessary();
                return ((DnsResult)(this.results[0]));
            }
        }
    }
    
    /// <remarks/>
    [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")]
    public delegate void ListZonesCompletedEventHandler(object sender, ListZonesCompletedEventArgs e);
    
    /// <remarks/>
    [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")]
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.ComponentModel.DesignerCategoryAttribute("code")]
    public partial class ListZonesCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
        
        private object[] results;
        
        internal ListZonesCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : 
                base(exception, cancelled, userState) {
            this.results = results;
        }
        
        /// <remarks/>
        public ZoneResult Result {
            get {
                this.RaiseExceptionIfNecessary();
                return ((ZoneResult)(this.results[0]));
            }
        }
    }
    
    /// <remarks/>
    [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")]
    public delegate void ListDomainCompletedEventHandler(object sender, ListDomainCompletedEventArgs e);
    
    /// <remarks/>
    [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")]
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.ComponentModel.DesignerCategoryAttribute("code")]
    public partial class ListDomainCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
        
        private object[] results;
        
        internal ListDomainCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : 
                base(exception, cancelled, userState) {
            this.results = results;
        }
        
        /// <remarks/>
        public DomainResult Result {
            get {
                this.RaiseExceptionIfNecessary();
                return ((DomainResult)(this.results[0]));
            }
        }
    }
    
    /// <remarks/>
    [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")]
    public delegate void AddRecordCompletedEventHandler(object sender, AddRecordCompletedEventArgs e);
    
    /// <remarks/>
    [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")]
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.ComponentModel.DesignerCategoryAttribute("code")]
    public partial class AddRecordCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
        
        private object[] results;
        
        internal AddRecordCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : 
                base(exception, cancelled, userState) {
            this.results = results;
        }
        
        /// <remarks/>
        public DnsResult Result {
            get {
                this.RaiseExceptionIfNecessary();
                return ((DnsResult)(this.results[0]));
            }
        }
    }
    
    /// <remarks/>
    [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")]
    public delegate void UpdateRecordCompletedEventHandler(object sender, UpdateRecordCompletedEventArgs e);
    
    /// <remarks/>
    [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")]
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.ComponentModel.DesignerCategoryAttribute("code")]
    public partial class UpdateRecordCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
        
        private object[] results;
        
        internal UpdateRecordCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : 
                base(exception, cancelled, userState) {
            this.results = results;
        }
        
        /// <remarks/>
        public DnsResult Result {
            get {
                this.RaiseExceptionIfNecessary();
                return ((DnsResult)(this.results[0]));
            }
        }
    }
    
    /// <remarks/>
    [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")]
    public delegate void DeleteRecordCompletedEventHandler(object sender, DeleteRecordCompletedEventArgs e);
    
    /// <remarks/>
    [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")]
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.ComponentModel.DesignerCategoryAttribute("code")]
    public partial class DeleteRecordCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
        
        private object[] results;
        
        internal DeleteRecordCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : 
                base(exception, cancelled, userState) {
            this.results = results;
        }
        
        /// <remarks/>
        public DnsResult Result {
            get {
                this.RaiseExceptionIfNecessary();
                return ((DnsResult)(this.results[0]));
            }
        }
    }
    
    /// <remarks/>
    [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")]
    public delegate void ApplyTemplateCompletedEventHandler(object sender, ApplyTemplateCompletedEventArgs e);
    
    /// <remarks/>
    [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")]
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.ComponentModel.DesignerCategoryAttribute("code")]
    public partial class ApplyTemplateCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
        
        private object[] results;
        
        internal ApplyTemplateCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : 
                base(exception, cancelled, userState) {
            this.results = results;
        }
        
        /// <remarks/>
        public DnsResult Result {
            get {
                this.RaiseExceptionIfNecessary();
                return ((DnsResult)(this.results[0]));
            }
        }
    }
}
